#pragma once

#include "Function.h"

class WHENGINE_API CNativeFunction : public CFunction
{
public:
    CNativeFunction(CFunctionList* InParentList 
        , const CString& InName
        ,const SDecoratedType& InReturnType
        ,const TVector<SDecoratedType>& InParameterTypes
        ,TMap<EFunctionFlags, SReflectionMetaDataValue> InMetaData
        );

    virtual SDecoratedType GetReturnType() override {return ReturnType;}

    virtual TVector<SDecoratedType> GetParameterTypes() override {return ParameterTypes;}

    virtual uint32_t GetParameterNum() override {return ParameterTypes.Num();}

    virtual bool IsNative() {return true;}

    //for find the CFunction by raw function pointer
    int64_t NativeFunctionPtr=0;
};